// service/pages/applyfor/applyfor.js
import http from '../../../utils/https'

Page({
  data: {
    // 状态相关（0审核中、1通过、2已分配、3已完成、4审核未通过）
    repairStatus: 0,
    statusText: ['审核中', '通过', '已分配', '已完成', '审核未通过'],
    // 时间相关
    submitTime: '',
    auditTime: '',
    dispatchTime: '',
    completeTime: '',
    appointmentDate: '',
    
    // 报修信息
    id: '',
    houseInfo: '',
    maintenanceItem: '',
    contactPerson: '',
    contactPhone: '',
    description: '',
    problemImg: [],
    auditSuggest: ''
  },

  // 计算步骤的样式类名（核心修改）
  getStepClass(step) {
    const { repairStatus } = this.data;
    
    // 审核未通过状态（4）：第0步激活，第1步标红，其他禁用
    if (repairStatus === 4) {
      if (step === 0) return 'active';   // 已提交步骤正常激活
      if (step === 1) return 'failed';   // 审核步骤标红
      return 'disabled';                 // 后续步骤禁用
    }
    
    // 正常状态：当前步骤及之前的步骤都激活
    // 状态映射：0=激活第0步，1=激活0-1步，2=激活0-2步，3=激活所有步骤
    const activeStep = repairStatus; // 直接使用状态值作为激活步骤索引
    return step <= activeStep ? 'active' : 'disabled';
  },

  onLoad(options) {
    // 获取从repairReport传递的报修ID和状态
    if (options && options.id) {
      this.setData({
        id: options.id,
        repairStatus: options.status ? parseInt(options.status) : 0
      })
      this.fetchMaintenanceDetail(options.id);
    } else {
      wx.showToast({ 
        title: '参数错误', 
        icon: 'none',
        duration: 2000
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 2000);
    }
  },

  // 获取报修详情数据
  fetchMaintenanceDetail(id) {
    http.get(`property/repair/${id}`)
      .then(res => {
        if (res.code === 200 && res.data) {
          this.formatAndSetData(res.data);
        } else {
          wx.showToast({ 
            title: res.msg || '获取数据失败', 
            icon: 'none' 
          });
        }
      })
      .catch(err => {
        console.error('获取报修详情失败:', err);
        wx.showToast({ title: '网络异常', icon: 'none' });
      });
  },

  // 格式化数据并设置到页面
  formatAndSetData(repairData) {
    this.setData({
      // 状态信息
      repairStatus: repairData.repairStatus || 0,
      
      // 时间信息
      submitTime: this.formatDateTime(repairData.submitDate),
      auditTime: this.formatDateTime(repairData.auditDate),
      dispatchTime: this.formatDateTime(repairData.assignDate),
      completeTime: this.formatDateTime(repairData.completeDate),
      appointmentDate: this.formatDate(repairData.appointmentDate),
      
      // 报修详情
      houseInfo: repairData.houseName || `房屋ID: ${repairData.houseId || ''}`,
      maintenanceItem: repairData.repairItem || '',
      contactPerson: repairData.ownerName || '',
      contactPhone: repairData.contactPhone || '',
      description: repairData.problem || '',
      auditSuggest: repairData.auditSuggest || '',
      
      // 处理图片数据（可能是逗号分隔的字符串）
      problemImg: repairData.problemImg 
        ? (typeof repairData.problemImg === 'string' 
            ? repairData.problemImg.split(',').filter(img => img)
            : repairData.problemImg)
        : []
    });
  },

  /**
   * 格式化日期 (YYYY/MM/DD)
   */
  formatDate(dateString) {
    if (!dateString || dateString === 'null') return '';
    try {
      const date = new Date(dateString);
      return `${date.getFullYear()}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')}`;
    } catch (e) {
      console.error('日期格式化错误:', e);
      return '';
    }
  },

  /**
   * 格式化日期时间 (YYYY/MM/DD HH:MM)
   */
  formatDateTime(dateString) {
    if (!dateString || dateString === 'null') return '';
    try {
      const date = new Date(dateString);
      return `${date.getFullYear()}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
    } catch (e) {
      console.error('日期时间格式化错误:', e);
      return '';
    }
  },

  // 返回上一页
  goBack() {
    wx.navigateBack();
  },

  // 预览图片
  previewImage(e) {
    const currentImg = e.currentTarget.dataset.img;
    wx.previewImage({
      current: currentImg,
      urls: this.data.problemImg
    });
  },

  // 修改申请
  modifyApplication() {
    if (this.data.repairStatus !== 0) {
      wx.showToast({
        title: '只有审核中的申请可以修改',
        icon: 'none'
      });
      return;
    }

    wx.navigateTo({
      url: `/service/pages/editRepair/editRepair?id=${this.data.id}`
    });
  },

  // 撤销申请
  cancelApplication() {
    if (this.data.repairStatus !== 0) {
      wx.showToast({
        title: '只有审核中的申请可以撤销',
        icon: 'none'
      });
      return;
    }

    wx.showModal({
      title: '确认撤销',
      content: '确定要撤销该报修申请吗？',
      confirmText: '确认',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          this.doCancelApplication();
        }
      }
    });
  },

  // 执行撤销申请
  doCancelApplication() {
    http.delete(`property/repair/${this.data.id}`)
      .then(res => {
        if (res.code === 200) {
          wx.showToast({
            title: '撤销成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              setTimeout(() => {
                wx.navigateBack();
              }, 2000);
            }
          });
        } else {
          wx.showToast({ 
            title: res.msg || '撤销失败', 
            icon: 'none' 
          });
        }
      })
      .catch(err => {
        console.error('撤销申请失败:', err);
        wx.showToast({ title: '操作失败', icon: 'none' });
      });
  }
})